﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;

namespace SFast
{
    public static partial class Checking
    {
        #region 验证所用的正则
        /// <summary>
        /// 是否是数字验证(带正负 的数字验证)
        /// </summary>
        private static Regex RegNumber = new Regex("^[+-]?[0-9]+$");    


        private static Regex RegDecimal = new Regex("^[0-9]+[.]?[0-9]+$");
        //等价于^[+-]?\d+[.]?\d+$   
        private static Regex RegDecimalSign = new Regex("^[+-]?[0-9]+[.]?[0-9]+$");
        //w 英文字母或数字的字符串，和 [a-zA-Z0-9] 语法一样    
        private static Regex RegEmail = new Regex("^[\\w-]+@[\\w-]+\\.(com|net|org|edu|mil|tv|biz|info)$");

        /// <summary>
        /// 中文验证正则
        /// </summary>
        private static Regex RegCHZN = new Regex("[\u4e00-\u9fa5]");
        #endregion

        #region 是否是数字验证(带正负 的数字验证)
        /// <summary>   
        /// 是否是数字验证(带正负 的数字验证) 
        /// </summary>   
        /// <param name="inputData">输入字符串</param>   
        /// <returns></returns>   
        public static bool IsNumber(string inputData)
        {
            Match m = RegNumber.Match(inputData);
            return m.Success;
        }
        #endregion

        #region 是否是浮点数
        /// <summary>   
        /// 是否是浮点数   
        /// </summary>   
        /// <param name="inputData">输入字符串</param>   
        /// <returns></returns>   
        public static bool IsDecimal(string inputData)
        {
            Match m = RegDecimal.Match(inputData);
            return m.Success;
        }
        #endregion

        #region 是否是浮点数 可带正负号
        /// <summary>   
        /// 是否是浮点数 可带正负号   
        /// </summary>   
        /// <param name="inputData">输入字符串</param>   
        /// <returns></returns>   
        public static bool IsDecimalSign(string inputData)
        {
            Match m = RegDecimalSign.Match(inputData);
            return m.Success;
        }
        #endregion

        #region 中文检测
        /// <summary>   
        /// 检测是否有中文字符   
        /// </summary>   
        /// <param name="inputData"></param>   
        /// <returns></returns>   
        public static bool IsHasCHZN(string inputData)
        {
            Match m = RegCHZN.Match(inputData);
            return m.Success;
        }
        #endregion

        #region 邮件地址
        /// <summary>   
        /// 是否是浮点数 可带正负号   
        /// </summary>   
        /// <param name="inputData">输入字符串</param>   
        /// <returns></returns>   
        public static bool IsEmail(string inputData)
        {
            Match m = RegEmail.Match(inputData);
            return m.Success;
        }
        #endregion

        #region String扩展函数 _HasVal() 判断变量中是否为null或Empty
        /// <summary>
        /// 判断变量中是否为null或Empty
        /// </summary>
        /// <param name="val"></param>
        /// <returns></returns>
        public static Boolean _HasVal(this String val)
        {
            if (String.IsNullOrEmpty(val))
            {
                return false;
            }
            else
            {
                return true;
            }
        }
        #endregion

        #region String扩展函数 _HasVal() 当变量为null或Empty，返回设置的默认值
        /// <summary>
        /// 当变量为null或Empty，返回设置的默认值
        /// </summary>
        /// <param name="val"></param>
        /// <param name="dv">默认值</param>
        /// <returns></returns>
        public static String _HasVal(this String val,String dv)
        {
            if (val._HasVal())
            {
                return val;
            }
            else
            {
                return dv;
            }
        }
        #endregion 

    }
}
